from ast import arg
from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 技能0(被动技能):
    名称 = '基础精通'
    倍率 = 1.0
    所在等级 = 1
    等级上限 = 200
    等级精通 = 110
    关联技能 = ['帝国剑术']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(self.倍率 * (0.463 + 0.089 * self.等级), 5)


class 技能1(主动技能):
    名称 = '帝国剑术'
    备注 = '(TP为基础精通)'
    所在等级 = 1
    等级上限 = 1
    基础等级 = 1
    MP = [6, 140]
    # 巨剑 180.53+205.90+127.83
    data0 = [int(i) for i in [0, 514.25]]
    hit0 = 1
    # 太刀 122.81+170.41+195.72
    data1 = [int(i) for i in [0, 486.67]]
    hit1 = 1
    # 短剑 (69.16+74.22+80.97+86.03)*2
    data2 = [int(i) for i in [0, 310.37]]
    hit2 = 2
    # 钝器 102.14+153.95+179.12+76.98
    data3 = [int(i) for i in [0, 512.19]]
    hit3 = 1
    CD = 1.0  # 实际没有
    TP成长 = 0.10
    TP上限 = 5

    def 等效百分比(self, **argv):
        武器类型 = argv.get('武器类型', '')
        if 武器类型 == '巨剑':
            self.hit0 = 1
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
        if 武器类型 == '太刀':
            self.hit0 = 0
            self.hit1 = 1
            self.hit2 = 0
            self.hit3 = 0
        if 武器类型 == '短剑':
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 2
            self.hit3 = 0
        if 武器类型 == '钝器':
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 1
        return super().等效百分比(**argv)


class 技能2(主动技能):
    名称 = '魔剑降临'
    备注 = '火冰光为次数，暗为秒伤'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [94, 1029]
    # 火
    data0 = [0, 111, 121, 133, 143, 155, 165, 178, 188, 200, 210, 222, 232, 246, 255, 268, 277, 290, 299, 313, 323, 335, 345, 357, 367, 380, 390, 402, 412, 424, 434, 447, 457, 469, 479, 490, 502, 513, 524, 535, 546, 557, 569, 580, 591, 602, 613, 623, 636, 647, 658, 668, 680, 690, 704, 713, 726, 735, 748, 757, 771, 781, 793, 803, 815, 825, 838, 848, 860, 870, 882]
    hit0 = 1
    # 冰
    data1 = [0, 111, 121, 133, 143, 155, 165, 178, 188, 200, 210, 222, 232, 246, 255, 268, 277, 290, 299, 313, 323, 335, 345, 357, 367, 380, 390, 402, 412, 424, 434, 447, 457, 469, 479, 490, 502, 513, 524, 535, 546, 557, 569, 580, 591, 602, 613, 623, 636, 647, 658, 668, 680, 690, 704, 713, 726, 735, 748, 757, 771, 781, 793, 803, 815, 825, 838, 848, 860, 870, 882]
    hit1 = 0
    # 光
    data2 = [0, 123, 141, 154, 163, 181, 189, 198, 216, 225, 242, 255, 269, 277, 291, 304, 313, 335, 344, 357, 370, 379, 392, 405, 423, 432, 449, 458, 467, 484, 493, 511, 524, 537, 546, 559, 573, 581, 603, 612, 625, 639, 647, 661, 674, 691, 700, 718, 727, 735, 753, 762, 780, 793, 806, 815, 828, 841, 850, 872, 881, 894, 907, 916, 929, 942, 960, 969, 986, 995, 1004]
    hit2 = 0
    # 暗 dot伤害，按秒伤看叠满两层是每秒4段
    data3 = [0, 73, 80, 88, 95, 103, 111, 117, 126, 132, 140, 146, 154, 162, 170, 176, 184, 190, 199, 207, 212, 221, 229, 236, 243, 250, 258, 266, 273, 280, 288, 295, 303, 309, 317, 325, 333, 340, 347, 355, 362, 369, 377, 384, 391, 400, 407, 413, 422, 428, 436, 444, 450, 458, 467, 472, 480, 487, 495, 503, 509, 517, 525, 532, 539, 546, 554, 563, 569, 576, 585]
    hit3 = 0
    TP成长 = 0.1
    TP上限 = 7
    CD = 1  # 对于火冰光无实际CD，对于暗就是秒伤

    形态 = ["火", "冰", "光", "暗"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "火":
            self.hit0 = 1
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 0
        if 形态 == "冰":
            self.hit0 = 0
            self.hit1 = 1
            self.hit2 = 0
            self.hit3 = 0
        if 形态 == "光":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 3
            self.hit3 = 0
        if 形态 == "暗":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 4

    def 等效CD(self, **argv):
        return 1.0


class 技能3(被动技能):
    名称 = '毁灭之巨剑精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能 = ['所有']
    关联技能1 = ['所有']
    关联技能2 = ['破军旋舞斩']
    关联技能3 = ['帝国剑术']
    data1 = [0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61]
    data2 = [0, 16, 17, 17, 18, 19, 19, 20, 20, 21, 22, 22, 23, 23, 24, 25, 25, 26, 26, 27, 28, 28, 29, 29, 30, 31, 31, 32, 32, 33, 34, 34, 35, 35, 36, 37, 37, 38, 38, 39, 40]
    data3 = [0, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 16, 17, 17, 18, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 25, 25, 26]
    data4 = [0, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57]

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '巨剑':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 100

    def 加成倍率1(self, 武器类型):
        if 武器类型 != '巨剑':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 100

    # 破军圆舞斩
    def 加成倍率2(self, 武器类型):
        if 武器类型 != '巨剑':
            return 1.0
        else:
            return 1 + self.data3[self.等级] / 100

    # 帝国剑术
    def 加成倍率3(self, 武器类型):
        if 武器类型 != '巨剑':
            return 1.0
        else:
            return 1.36

    # 恶即斩终结
    def 额外倍率1(self):
        return 1 + self.data4[self.等级] / 100


class 技能4(被动技能):
    名称 = '血影之太刀精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能 = ['所有']
    关联技能1 = ['所有']
    非关联技能1 = ['帝国剑术', '魔剑降临']
    关联技能2 = ['魔剑降临']
    关联技能3 = ['帝国剑术']
    冷却关联技能 = ['所有']
    data1 = [0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61]
    data2 = [0, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44]
    data3 = [0, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29]

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '太刀':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 100

    # 柔化加成
    def 加成倍率1(self, 武器类型):
        if 武器类型 != '太刀':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 100

    # 魔剑降临
    def 加成倍率2(self, 武器类型):
        if 武器类型 != '太刀':
            return 1.0
        else:
            return 1 + self.data3[self.等级] / 100

    # 帝国剑术
    def 加成倍率3(self, 武器类型):
        if 武器类型 != '太刀':
            return 1.0
        else:
            return 1.26

    def CD缩减倍率(self, 武器类型):
        if self.等级 == 0 or 武器类型 != '太刀':
            return 1.0
        else:
            return 0.9


class 技能5(被动技能):
    名称 = '魔性之短剑精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能 = ['所有']
    关联技能1 = ['所有']
    冷却关联技能 = ['魔剑奥义']
    data1 = [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52]
    data2 = [0, 17.5, 18, 18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5, 24, 24.5, 25, 25.5, 26, 26.5, 27, 27.5, 28, 28.5, 29, 29.5, 30, 30.5, 31, 31.5, 32, 32.5, 33, 33.5, 34, 34.5, 35, 35.5, 36, 36.5, 37]
    data3 = [0, 34, 35, 37, 38, 40, 41, 42, 44, 45, 47, 48, 50, 51, 53, 54, 56, 57, 58, 60, 61, 63, 64, 66, 67, 69, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 85, 86, 87, 88, 89]
    data4 = [0, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]

    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '短剑':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 100

    def 加成倍率1(self, 武器类型):
        if 武器类型 != '短剑':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 100

    def CD缩减倍率(self, 武器类型):
        if 武器类型 != '短剑':
            return 1.0
        else:
            return 1 - self.data3[self.等级] / 100

    # 瞬影三绝斩异常伤害
    def 额外倍率1(self):
        return 1 + self.data4[self.等级] / 100


class 技能6(被动技能):
    名称 = '波动之钝器精通'
    所在等级 = 15
    等级上限 = 40
    基础等级 = 30
    关联技能 = ['所有']
    关联技能1 = ['所有']
    关联技能2 = ['雷鸣千军破']
    data1 = [0, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61]
    data2 = [0, 18.5, 19, 19.5, 20, 20.5, 21, 21.5, 22, 22.5, 23, 23.5, 24, 24.5, 25, 25.5, 26, 26.5, 27, 27.5, 28, 28.5, 29, 29.5, 30, 30.5, 31, 31.5, 32, 32.5, 33, 33.5, 34, 34.5, 35, 35.5, 36, 36.5, 37, 37.5, 38]
    data4 = [0, 11, 12, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 27, 29, 30, 31, 33, 34, 35, 37, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 63, 64]
    data5 = [0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]
    def 物理攻击力倍率(self, 武器类型):
        if 武器类型 != '钝器':
            return 1.0
        else:
            return 1 + self.data1[self.等级] / 100

    def 加成倍率1(self, 武器类型):
        if 武器类型 != '钝器':
            return 1.0
        else:
            return 1 + self.data2[self.等级] / 100

    # 雷鸣千军破
    def 加成倍率2(self, 武器类型):
        if 武器类型 != '钝器':
            return 1.0
        else:
            return 2.8

    # 幻剑术冲击波
    def 额外倍率1(self):
        return 1 + self.data4[self.等级] / 100

    # 穿云破空剑冲击波
    def 额外倍率2(self):
        return 1 + self.data5[self.等级] / 100


class 技能7(主动技能):
    名称 = '疾影斩'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [20, 210]
    data0 = [0, 3665, 4035, 4407, 4779, 5149, 5524, 5895, 6266, 6638, 7008, 7381, 7753, 8124, 8497, 8869, 9240, 9612, 9983, 10354, 10727, 11101, 11471, 11843, 12214, 12585, 12956, 13330, 13701, 14073, 14445, 14816, 15188, 15560, 15932, 16303, 16677, 17046, 17419, 17791, 18161, 18535, 18907, 19277, 19649, 20022, 20392, 20765, 21136, 21508, 21880, 22251, 22623, 22996, 23367, 23738, 24110, 24482, 24854, 25225, 25596, 25967, 26341, 26713, 27085, 27456, 27827, 28199, 28571, 28942, 29315]
    hit0 = 1
    CD = 7.0
    TP成长 = 0.10
    TP上限 = 7


class 技能8(主动技能):
    名称 = '幻剑术'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [30, 350]
    data0 = [0, 935, 1031, 1126, 1222, 1315, 1411, 1505, 1602, 1697, 1791, 1886, 1981, 2076, 2172, 2266, 2362, 2456, 2552, 2644, 2742, 2837, 2932, 3025, 3120, 3215, 3313, 3406, 3501, 3595, 3691, 3786, 3882, 3976, 4071, 4166, 4262, 4355, 4451, 4546, 4642, 4737, 4831, 4926, 5021, 5117, 5212, 5306, 5402, 5496, 5593, 5688, 5782, 5878, 5972, 6065, 6160, 6255, 6353, 6447, 6541, 6635, 6731, 6828, 6922, 7017, 7111, 7207, 7302, 7397, 7492]
    hit0 = 6
    # 钝器冲击波
    data1 = [0, 233, 257, 280, 305, 329, 352, 376, 398, 423, 447, 470, 494, 517, 543, 567, 590, 614, 638, 661, 685, 709, 732, 756, 780, 804, 828, 851, 875, 899, 922, 946, 969, 993, 1019, 1041, 1066, 1090, 1113, 1137, 1160, 1184, 1208, 1231, 1255, 1280, 1303, 1327, 1351, 1374, 1398, 1421, 1445, 1469, 1492, 1517, 1541, 1564, 1588, 1611, 1637, 1660, 1683, 1707, 1731, 1755, 1779, 1802, 1826, 1850, 1874]
    hit1 = 0
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 7

    def 等效百分比(self, **argv):
        武器类型 = argv.get('武器类型', '')
        char: Character = argv.get('char', {})
        if 武器类型 == '钝器':
            self.hit0 = 6
            self.hit1 = 6
            self.power1 = char.get_skill_by_name("波动之钝器精通").额外倍率1()
        else:
            self.hit0 = 6
            self.hit1 = 0
        return super().等效百分比(**argv)


class 技能9(主动技能):
    名称 = '升龙剑'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [30, 350]
    data0 = [0, 449, 495, 541, 586, 632, 678, 723, 769, 815, 861, 905, 951, 997, 1043, 1088, 1134, 1179, 1225, 1270, 1316, 1362, 1407, 1454, 1499, 1545, 1590, 1636, 1681, 1727, 1772, 1819, 1864, 1910, 1955, 2001, 2047, 2092, 2137, 2183, 2229, 2274, 2320, 2365, 2411, 2456, 2502, 2548, 2593, 2639, 2685, 2730, 2775, 2821, 2868, 2914, 2959, 3005, 3051, 3096, 3142, 3187, 3233, 3278, 3324, 3369, 3415, 3460, 3506, 3552, 3597]
    hit0 = 4
    data1 = [0, 4135, 4551, 4972, 5394, 5812, 6234, 6651, 7069, 7491, 7912, 8328, 8752, 9169, 9589, 10006, 10426, 10848, 11268, 11686, 12105, 12523, 12946, 13366, 13783, 14206, 14623, 15040, 15463, 15883, 16306, 16723, 17141, 17560, 17980, 18398, 18820, 19240, 19660, 20077, 20494, 20918, 21338, 21757, 22177, 22595, 23017, 23434, 23852, 24277, 24695, 25111, 25532, 25952, 26372, 26792, 27211, 27631, 28049, 28468, 28888, 29306, 29729, 30149, 30566, 30988, 31406, 31823, 32249, 32665, 33083]
    hit1 = 1
    CD = 8.0
    TP成长 = 0.10
    TP上限 = 7


class 技能10(主动技能):
    名称 = '穿云破空剑'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 3
    等级精通 = 60
    MP = [60, 390]
    data0 = [0, 1139, 1322, 1503, 1686, 1867, 2049, 2229, 2410, 2594, 2776, 2956, 3139, 3322, 3503, 3685, 3867, 4048, 4231, 4412, 4593, 4775, 4956, 5138, 5321, 5503, 5684, 5865, 6048, 6231, 6412, 6594, 6774, 6956, 7138, 7318, 7502, 7684, 7864, 8047, 8230, 8412, 8593, 8776, 8957, 9137, 9318, 9502, 9683, 9865, 10047, 10229, 10411, 10593, 10773, 10956, 11138, 11320, 11501, 11683, 11864, 12046, 12227, 12410, 12592, 12774, 12955, 13137, 13319, 13502, 13684]
    hit0 = 1
    data1 = [0, 763, 885, 1007, 1128, 1248, 1372, 1492, 1616, 1736, 1860, 1980, 2103, 2223, 2346, 2467, 2589, 2710, 2833, 2954, 3074, 3197, 3318, 3441, 3562, 3685, 3806, 3929, 4050, 4173, 4292, 4415, 4536, 4659, 4780, 4902, 5024, 5144, 5266, 5388, 5510, 5632, 5754, 5876, 5997, 6118, 6240, 6362, 6484, 6606, 6727, 6850, 6971, 7094, 7214, 7337, 7458, 7581, 7702, 7824, 7945, 8068, 8188, 8311, 8432, 8552, 8676, 8796, 8919, 9040, 9163]
    hit1 = 8
    data2 = [0, 896, 1037, 1181, 1323, 1467, 1609, 1751, 1895, 2039, 2180, 2322, 2467, 2610, 2752, 2894, 3038, 3182, 3323, 3467, 3609, 3753, 3895, 4039, 4179, 4321, 4466, 4609, 4751, 4893, 5038, 5181, 5322, 5464, 5608, 5752, 5894, 6038, 6180, 6324, 6465, 6609, 6751, 6895, 7038, 7180, 7323, 7463, 7609, 7750, 7893, 8036, 8180, 8322, 8464, 8607, 8750, 8893, 9037, 9179, 9322, 9465, 9609, 9750, 9893, 10035, 10180, 10322, 10465, 10608, 10752]
    hit2 = 1
    CD = 12.0
    TP成长 = 0.10
    TP上限 = 7

    def TP加成(self):
        return 1.0

    def 等效百分比(self, **argv):
        武器类型 = argv.get('武器类型', '')
        char: Character = argv.get('char', {})
        if self.TP等级 > 0:
            self.hit1 = 8+self.TP等级
            if 武器类型 == '钝器':
                self.power2 = char.get_skill_by_name("波动之钝器精通").额外倍率2()
        else:
            self.hit1 = 8
            if 武器类型 == '钝器':
                self.power2 = char.get_skill_by_name("波动之钝器精通").额外倍率2()
        return super().等效百分比(**argv)


class 技能11(主动技能):
    名称 = '魔剑奥义'
    备注 = '单次'
    是否主动 = 0
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [60, 390]
    # 火
    data0 = [0, 852, 938, 1026, 1112, 1198, 1285, 1371, 1458, 1543, 1631, 1718, 1804, 1891, 1976, 2063, 2151, 2237, 2324, 2409, 2496, 2583, 2669, 2756, 2842, 2929, 3015, 3102, 3188, 3274, 3362, 3448, 3534, 3621, 3707, 3794, 3880, 3967, 4054, 4140, 4227, 4312, 4399, 4486, 4573, 4660, 4745, 4832, 4919, 5005, 5091, 5178, 5265, 5352, 5438, 5524, 5610, 5697, 5784, 5870, 5957, 6043, 6130, 6216, 6302, 6390, 6476, 6563, 6648, 6735, 6822]
    hit0 = 1
    # 冰
    data1 = [0, 938, 1032, 1128, 1222, 1319, 1414, 1509, 1603, 1698, 1794, 1890, 1985, 2080, 2175, 2269, 2365, 2459, 2556, 2651, 2746, 2842, 2935, 3031, 3126, 3222, 3316, 3412, 3508, 3601, 3698, 3792, 3888, 3983, 4078, 4174, 4267, 4364, 4459, 4554, 4649, 4744, 4839, 4936, 5030, 5125, 5220, 5315, 5411, 5506, 5602, 5695, 5791, 5887, 5981, 6078, 6172, 6268, 6361, 6457, 6553, 6647, 6744, 6838, 6933, 7028, 7123, 7218, 7314, 7410, 7505]
    hit1 = 1
    # 光
    data2 = [0, 938, 1032, 1128, 1222, 1319, 1414, 1509, 1603, 1698, 1794, 1890, 1985, 2080, 2175, 2269, 2365, 2459, 2556, 2651, 2746, 2842, 2935, 3031, 3126, 3222, 3316, 3412, 3508, 3601, 3698, 3792, 3888, 3983, 4078, 4174, 4267, 4364, 4459, 4554, 4649, 4744, 4839, 4936, 5030, 5125, 5220, 5315, 5411, 5506, 5602, 5695, 5791, 5887, 5981, 6078, 6172, 6268, 6361, 6457, 6553, 6647, 6744, 6838, 6933, 7028, 7123, 7218, 7314, 7410, 7505]
    hit2 = 1
    # 暗
    data3 = [0, 852, 938, 1026, 1112, 1198, 1285, 1371, 1458, 1543, 1631, 1718, 1804, 1891, 1976, 2063, 2151, 2237, 2324, 2409, 2496, 2583, 2669, 2756, 2842, 2929, 3015, 3102, 3188, 3274, 3362, 3448, 3534, 3621, 3707, 3794, 3880, 3967, 4054, 4140, 4227, 4312, 4399, 4486, 4573, 4660, 4745, 4832, 4919, 5005, 5091, 5178, 5265, 5352, 5438, 5524, 5610, 5697, 5784, 5870, 5957, 6043, 6130, 6216, 6302, 6390, 6476, 6563, 6648, 6735, 6822]
    hit3 = 1
    # TP是减少触发间隔，每级-10%，7级-70%
    TP成长 = 0.1
    TP上限 = 7
    CD = 5
    形态 = ["火/暗", "冰/光", "冰光", "冰火", "火暗", "火冰"]

    def 形态变更(self, 形态, char: Character):
        if char == {}:
            武器类型 = "巨剑"
        else:
            武器类型 = char.武器类型
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 武器类型 != '短剑' and len(形态) == 2:
            形态 = 形态[:1]
        if 武器类型 == '短剑' and len(形态) == 3:
            形态 = 形态.replace("/", "")
        if 形态 == "冰光":
            # 火
            self.power0 = 0
            # 冰
            self.power1 = 1.65
            # 光 副武器受短精增幅
            self.power2 = 0.25 * 1.65
            # 暗
            self.power3 = 0
        elif 形态 == "冰火":
            # 火 副武器受短精增幅
            self.power0 = 0.25 * 1.65
            # 冰
            self.power1 = 1.65
            # 光
            self.power2 = 0
            # 暗
            self.power3 = 0
        elif 形态 == "火暗":
            # 火
            self.power0 = 1.65
            # 冰
            self.power1 = 0
            # 光
            self.power2 = 0
            # 暗 副武器受短精增幅
            self.power3 = 0.25 * 1.65
        elif 形态 == "火冰":
            # 火
            self.power0 = 1.65
            # 冰 副武器受短精增幅
            self.power1 = 0.25 * 1.65
            # 光
            self.power2 = 0
            # 暗
            self.power3 = 0
        elif 形态 == "火/暗" or 形态 == "火":
            # 火
            self.power0 = 1
            # 冰
            self.power1 = 0
            # 光
            self.power2 = 0
            # 暗
            self.power3 = 0
        elif 形态 == "冰/光" or 形态 == "冰":
            # 火
            self.power0 = 0
            # 冰
            self.power1 = 1
            # 光
            self.power2 = 0
            # 暗
            self.power3 = 0
            pass


class 技能12(被动技能):
    名称 = '魔剑觉醒'
    所在等级 = 30
    等级上限 = 15
    基础等级 = 5

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.035 + 0.015 * self.等级, 5)


class 技能13(主动技能):
    名称 = '瞬影三绝斩'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    # 冰暗 剑气本体伤害
    data0 = [0, 3622, 3989, 4359, 4726, 5094, 5460, 5828, 6195, 6564, 6930, 7299, 7665, 8033, 8401, 8769, 9136, 9504, 9872, 10239, 10607, 10974, 11342, 11710, 12078, 12445, 12812, 13179, 13548, 13915, 14283, 14650, 15019, 15384, 15753, 16122, 16488, 16857, 17224, 17591, 17958, 18326, 18693, 19063, 19429, 19797, 20163, 20531, 20898, 21267, 21634, 22004, 22371, 22736, 23105, 23472, 23840, 24207, 24576, 24943, 25310, 25677, 26045, 26412, 26781, 27148, 27515, 27885, 28251, 28619, 28986]
    hit0 = 3
    # 火光 剑气本体伤害
    data1 = [0, 3449, 3799, 4151, 4501, 4852, 5200, 5551, 5900, 6251, 6600, 6952, 7300, 7651, 8001, 8351, 8701, 9052, 9401, 9751, 10102, 10451, 10802, 11152, 11503, 11852, 12202, 12552, 12902, 13252, 13603, 13952, 14303, 14652, 15003, 15355, 15703, 16054, 16403, 16753, 17103, 17454, 17803, 18155, 18504, 18854, 19203, 19554, 19903, 20254, 20604, 20956, 21305, 21654, 22005, 22354, 22705, 23055, 23405, 23755, 24105, 24454, 24805, 25155, 25506, 25855, 26205, 26557, 26905, 27256, 27606]
    hit1 = 0
    # 火光额外
    data2 = [0, 724, 798, 872, 945, 1019, 1092, 1166, 1239, 1313, 1386, 1460, 1533, 1607, 1680, 1754, 1827, 1901, 1974, 2048, 2121, 2195, 2268, 2342, 2416, 2489, 2562, 2636, 2710, 2783, 2857, 2930, 3004, 3077, 3151, 3224, 3298, 3371, 3445, 3518, 3592, 3665, 3739, 3813, 3886, 3959, 4033, 4106, 4180, 4253, 4327, 4401, 4474, 4547, 4621, 4694, 4768, 4841, 4915, 4989, 5062, 5135, 5209, 5282, 5356, 5430, 5503, 5577, 5650, 5724, 5797]
    hit2 = 0
    CD = 15.0
    TP成长 = 0.10
    TP上限 = 5

    MP = [110, 924]
    无色消耗 = 1

    形态 = ["冰暗", "火光"]

    def 形态变更(self, 形态, char: Character):
        形态 = 形态.replace("&","")
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "火光":
            self.hit0 = 0
            self.hit1 = 3
            self.hit2 = 1
            if char.武器类型 == '太刀':
                self.hit1 = 4
        if 形态 == "冰暗":
            self.hit0 = 3
            self.hit1 = 0
            self.hit2 = 0
            if char.武器类型 == '太刀':
                self.hit0 = 4

    # def 等效百分比(self, **argv):
    #     武器类型 = argv.get('武器类型', '')
    #     char: Character = argv.get('char', {})
    #     剑心_魔剑觉醒 = char.get_skill_by_name("剑心：魔剑觉醒")
    #     魔剑觉醒 = char.get_skill_by_name("魔剑觉醒")
    #     通用被动倍率 = 剑心_魔剑觉醒.加成倍率('')*魔剑觉醒.加成倍率('') * \
    #         (1+self.TP成长*self.TP等级) / char.基础面板物理攻击力()
    #     for item in char.符文:
    #         if not item is None and item != '':
    #             skill_name: str = item[0:-1]
    #             type = item[-1]
    #             if skill_name == self.名称:
    #                 # 紫
    #                 if type == "1":
    #                     通用被动倍率 *= 1.04
    #                 # 红
    #                 if type == "2":
    #                     通用被动倍率 *= 1.06
    #                 # 绿
    #                 if type == "3":
    #                     通用被动倍率 *= 0.96
    #     if 武器类型 == "":
    #         武器类型 = '巨剑'
    #     # TP加成本体
    #     self.power0 = 1 + self.TP成长*self.TP等级
    #     self.power1 = 1 + self.TP成长*self.TP等级

    #     if 武器类型 == "巨剑":
    #         self.power1 = 通用被动倍率 * char.get_skill_by_name("毁灭之巨剑精通").加成倍率1('')

    #     if 武器类型 == "太刀":
    #         # 追加一次攻击
    #         self.hit0 = 4
    #         self.power1 = 通用被动倍率 * char.get_skill_by_name("血影之太刀精通").加成倍率1('')
    #     if 武器类型 == "短剑":
    #         短剑精通 = char.get_skill_by_name("魔性之短剑精通")
    #         self.power1 = 通用被动倍率 * \
    #             短剑精通.加成倍率1('') * (2.0 if 短剑精通.等级 >= 25 else 1.0)
    #         self.灼伤power0 = self.感电power0 = 短剑精通.额外倍率1()
    #     if 武器类型 == "钝器":
    #         self.power1 = 通用被动倍率 * char.get_skill_by_name("波动之钝器精通").加成倍率1('')
    #     return super().等效百分比(**argv)


class 技能14(主动技能):
    名称 = '破军旋舞斩'
    备注 = '蓄气'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 3
    等级精通 = 60

    data0 = [0, 2771, 3212, 3655, 4095, 4538, 4980, 5421, 5864, 6306, 6747, 7189, 7631, 8073, 8516, 8956, 9398, 9840, 10282, 10723, 11166, 11607, 12049, 12491, 12932, 13375, 13816, 14258, 14700, 15141, 15585, 16026, 16467, 16909, 17350, 17793, 18235, 18676, 19118, 19559, 20002, 20443, 20886, 21327, 21769, 22211, 22654, 23095, 23536, 23978, 24420, 24861, 25304, 25745, 26187, 26629, 27070, 27513, 27955, 28396, 28838, 29279, 29723, 30164, 30605, 31047, 31488, 31931, 32372, 32815, 33256]
    hit0 = 3
    CD = 15.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [110, 924]
    无色消耗 = 1

    形态 = ["蓄力", "普通"]

    def 形态变更(self, 形态, char):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "蓄力":
            self.power0 = 1.2
        if 形态 == "普通":
            self.power0 = 1

    def 装备护石(self, char):
        self.倍率 *= 1.33


class 技能15(主动技能):
    名称 = '雷鸣千军破'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 3532, 3890, 4248, 4606, 4965, 5324, 5682, 6041, 6399, 6757, 7115, 7474, 7832, 8190, 8549, 8907, 9265, 9623, 9982, 10340, 10698, 11058, 11416, 11774, 12132, 12491, 12849, 13207, 13566, 13924, 14282, 14640, 14999, 15357, 15715, 16074, 16433, 16791, 17149, 17508, 17866, 18224, 18583, 18941, 19299, 19657, 20016, 20374, 20732, 21091, 21449, 21807, 22166, 22525, 22883, 23241, 23599, 23958, 24316, 24674, 25033, 25391, 25749, 26107, 26466, 26824, 27182, 27542, 27900, 28258]
    hit0 = 2
    data1 = [0, 7064, 7781, 8498, 9214, 9931, 10648, 11364, 12081, 12797, 13515, 14231, 14948, 15664, 16381, 17098, 17814, 18531, 19248, 19965, 20681, 21398, 22115, 22831, 23548, 24264, 24982, 25698, 26415, 27132, 27848, 28565, 29281, 29999, 30715, 31432, 32149, 32865, 33582, 34298, 35015, 35732, 36449, 37166, 37882, 38599, 39315, 40032, 40748, 41466, 42183, 42899, 43616, 44332, 45049, 45765, 46482, 47199, 47916, 48633, 49349, 50066, 50782, 51499, 52215, 52933, 53650, 54366, 55083, 55799, 56516]
    hit1 = 1

    CD = 20.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [50, 840]
    无色消耗 = 1

    def 等效百分比(self, **argv):
        武器类型 = argv.get('武器类型', '')
        if 武器类型 == '钝器':
            self.hit0 = 0
            self.hit1 = 1
        else:
            self.hit0 = 2
            self.hit1 = 1

        return super().等效百分比(**argv)

    def 装备护石(self, char):
        self.倍率 *= 1.29
        self.CDR *= 0.9


class 技能16(主动技能):
    名称 = '恶即斩'
    备注 = '连按'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [0, 1122, 1237, 1352, 1464, 1579, 1694, 1807, 1921, 2035, 2149, 2264, 2376, 2492, 2605, 2719, 2832, 2948, 3061, 3175, 3289, 3403, 3517, 3630, 3745, 3859, 3972, 4087, 4200, 4315, 4429, 4543, 4657, 4771, 4884, 4999, 5113, 5226, 5341, 5454, 5568, 5682, 5797, 5911, 6025, 6138, 6253, 6367, 6480, 6595, 6708, 6822, 6936, 7050, 7165, 7279, 7392, 7507, 7621, 7734, 7849, 7962, 8076, 8190, 8304, 8418, 8532, 8645, 8761, 8874, 8988]
    hit0 = 15  # 不连按为13
    data1 = [0, 9238, 10176, 11113, 12049, 12987, 13925, 14861, 15798, 16736, 17673, 18610, 19547, 20485, 21422, 22359, 23296, 24234, 25171, 26108, 27044, 27983, 28920, 29857, 30794, 31733, 32669, 33605, 34542, 35480, 36418, 37355, 38293, 39230, 40167, 41103, 42040, 42978, 43915, 44853, 45791, 46728, 47665, 48601, 49541, 50476, 51413, 52350, 53288, 54226, 55163, 56099, 57037, 57974, 58911, 59848, 60786, 61723, 62661, 63597, 64535, 65472, 66409, 67347, 68284, 69221, 70158, 71095, 72033, 72970, 73907]
    hit1 = 1
    CD = 40.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    CP武器 = False

    MP = [120, 2024]
    无色消耗 = 2

    def 等效百分比(self, **argv):
        武器类型 = argv.get('武器类型', '')
        char: Character = argv.get('char', {})
        if 武器类型 == '巨剑':
            self.power1 = char.get_skill_by_name("毁灭之巨剑精通").额外倍率1()
        return super().等效百分比(**argv)

    def 装备护石(self, char):
        self.power0 = 1.19
        self.hit1 = 1.38
        self.CDR *= 0.95


class 技能17(被动技能):
    名称 = '斩魂术'
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(0.995 + 0.03 + 0.02 * self.等级, 5)


class 技能18(主动技能):
    名称 = '极·驭剑术(时空斩)'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 13370, 16472, 19571, 22671, 25774, 28873, 31974, 35074, 38174, 41275, 44376, 47477, 50578, 53677, 56777, 59879, 62978, 66078, 69180, 72280, 75382, 78481, 81582, 84682, 87783, 90883, 93984, 97085, 100183, 103286, 106385, 109487, 112588, 115686, 118789, 121888, 124988, 128091, 131189, 134288, 137391, 140491, 143592, 146693, 149791, 152894, 155994, 159095, 162196, 165294]
    hit0 = 3
    data1 = [0, 26741, 32942, 39145, 45344, 51545, 57747, 63948, 70148, 76348, 82551, 88753, 94952, 101153, 107355, 113557, 119757, 125957, 132159, 138361, 144560, 150762, 156964, 163163, 169365, 175566, 181768, 187967, 194168, 200371, 206573, 212771, 218973, 225174, 231375, 237578, 243777, 249979, 256179, 262381, 268581, 274783, 280984, 287186, 293386, 299586, 305787, 311990, 318191, 324390, 330592]
    hit1 = 1
    CD = 145.0

    MP = [980, 8232]
    无色消耗 = 5


class 技能19(主动技能):
    名称 = '裂刃天冲'
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 4093, 4509, 4923, 5338, 5755, 6170, 6585, 7001, 7416, 7832, 8248, 8661, 9076, 9492, 9907, 10323, 10738, 11154, 11570, 11985, 12399, 12816, 13231, 13646, 14060, 14476, 14892, 15307, 15722, 16138, 16553, 16968, 17383, 17800, 18215, 18630, 19044, 19461, 19875, 20290, 20705, 21121, 21537, 21952, 22368, 22783, 23199, 23614, 24027, 24443]
    hit0 = 1
    data1 = [0, 639, 704, 770, 834, 899, 964, 1027, 1094, 1158, 1225, 1287, 1353, 1418, 1482, 1548, 1612, 1677, 1742, 1807, 1872, 1937, 2003, 2067, 2132, 2197, 2261, 2326, 2390, 2456, 2520, 2586, 2651, 2715, 2781, 2845, 2911, 2975, 3041, 3106, 3168, 3235, 3300, 3364, 3429, 3496, 3560, 3623, 3689, 3754, 3819]
    hit1 = 9     # 怪物高度低会变成8
    data2 = [0, 11257, 12399, 13543, 14684, 15827, 16968, 18110, 19253, 20395, 21537, 22679, 23822, 24964, 26104, 27248, 28390, 29532, 30672, 31815, 32959, 34099, 35241, 36385, 37528, 38668, 39809, 40954, 42094, 43236, 44379, 45521, 46663, 47804, 48948, 50090, 51232, 52373, 53516, 54658, 55800, 56944, 58085, 59226, 60368, 61511, 62654, 63795, 64937, 66080, 67221]
    hit2 = 1
    CD = 30.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [400, 1500]
    无色消耗 = 1

    形态 = ["满", "常规"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "满":
            self.hit0 = 1
            self.hit1 = 9
            self.hit2 = 1
        if 形态 == "常规":
            self.hit0 = 1
            self.hit1 = 8
            self.hit2 = 1

    def 装备护石(self, char):
        self.power0 = 0
        self.power1 = 0
        self.power2 = 2.28
        self.CDR *= 0.95


class 技能20(主动技能):
    名称 = '极·驭剑术(幻剑阵)'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 4853, 5345, 5838, 6329, 6823, 7315, 7807, 8300, 8792, 9285, 9777, 10271, 10762, 11254, 11747, 12239, 12732, 13224, 13718, 14209, 14701, 15194, 15686, 16178, 16670, 17163, 17654, 18146, 18640, 19132, 19625, 20117, 20610, 21102, 21593, 22087, 22579, 23073, 23565, 24058, 24550, 25041, 25535, 26027, 26520, 27012, 27505, 27997, 28489, 28980]
    hit0 = 4
    data1 = [0, 19415, 21384, 23355, 25323, 27293, 29262, 31233, 33201, 35172, 37141, 39111, 41079, 43050, 45019, 46989, 48959, 50930, 52898, 54867, 56837, 58807, 60776, 62746, 64716, 66685, 68655, 70624, 72596, 74564, 76534, 78503, 80474, 82442, 84413, 86382, 88353, 90320, 92290, 94260, 96229, 98199, 100170, 102140, 104108, 106079, 108048, 110018, 111987, 113957, 115926]
    hit1 = 1
    CD = 50.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1

    MP = [800, 1680]
    无色消耗 = 2

    def 装备护石(self, char):
        self.hit0 = 0
        self.hit1 = 4
        self.power1 = 0.63


class 技能21(主动技能):
    名称 = '飓风魔剑'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    # 伤害组成除了本身，还有堆叠的魔剑奥义层数，
    data0 = [0, 570, 629, 686, 744, 799, 858, 915, 973, 1032, 1090, 1148, 1206, 1263, 1321, 1378, 1438, 1495, 1552, 1610, 1669, 1725, 1783, 1841, 1899, 1956, 2014, 2073, 2129, 2187, 2246, 2304, 2362, 2421, 2478, 2536, 2594, 2650, 2707, 2765, 2824, 2882, 2940, 2998, 3055, 3113, 3171, 3230, 3288, 3344, 3402]
    hit0 = 40
    data1 = [0, 10014, 11030, 12046, 13061, 14077, 15094, 16110, 17125, 18141, 19157, 20174, 21189, 22205, 23220, 24237, 25254, 26268, 27285, 28300, 29317, 30334, 31348, 32364, 33380, 34397, 35411, 36428, 37444, 38460, 39477, 40491, 41507, 42524, 43540, 44555, 45571, 46587, 47604, 48620, 49635, 50652, 51667, 52684, 53699, 54715, 55731, 56748, 57764, 58778, 59796]
    hit1 = 1
    魔剑层数 = 5
    单层倍率 = 0.03
    奥义倍率 = 1.15      # 魔剑奥义额外增伤，每层0.03
    暗 = 0
    CD = 25.0
    是否有护石 = 1

    MP = [580, 4500]
    无色消耗 = 3

    形态 = ["5","暗5", "4","暗4", "3","暗3", "2" ,"暗2", "1","暗1", "0","暗0"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if "暗" in 形态:
            self.暗 = 10
        else:
            self.暗 = 0
        self.魔剑层数 = int(形态.replace('暗',''))
        if '飓风魔剑' in char.护石栏:
            self.魔剑层数 = min(self.魔剑层数, 3)
        self.奥义倍率 = 1 + self.单层倍率 * self.魔剑层数

    def 装备护石(self, char):
        self.power0 = 1.15
        self.power1 = 1.65
        self.单层倍率 = 0.05

    def 等效百分比(self, **argv):
        # 额外计算魔剑奥义伤害
        char = argv.get('char', {})
        伤害类型 = argv.get('伤害类型', '直伤')
        魔剑 = char.get_skill_by_name('魔剑奥义').等效百分比(伤害类型=伤害类型)
        return super().等效百分比(**argv)*self.奥义倍率 + 魔剑 * self.魔剑层数 + 魔剑*(0.09+self.等级/100)*self.暗


class 技能22(被动技能):
    名称 = '帝皇盟约'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 物理攻击力倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.28 + 0.02 * self.等级, 5)


class 技能23(主动技能):
    名称 = '极·驭剑术(破剑阵)'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 960, 1056, 1154, 1251, 1349, 1446, 1543, 1641, 1738, 1835, 1933, 2029, 2127, 2225, 2321, 2419, 2517, 2614, 2711, 2809, 2906, 3003, 3101, 3197, 3295, 3393, 3489, 3587, 3685, 3781, 3879, 3976, 4073, 4171, 4269, 4365, 4463, 4561, 4657, 4755, 4853, 4949, 5047, 5144, 5241, 5339, 5436, 5534, 5631, 5728]
    hit0 = 2
    data1 = [0, 6476, 7132, 7789, 8446, 9103, 9759, 10418, 11074, 11731, 12389, 13045, 13702, 14359, 15016, 15672, 16329, 16987, 17644, 18301, 18958, 19615, 20271, 20929, 21585, 22242, 22899, 23556, 24213, 24871, 25528, 26184, 26842, 27498, 28155, 28812, 29469, 30125, 30784, 31441, 32097, 32755, 33411, 34068, 34724, 35382, 36038, 36695, 37353, 38009, 38666]
    hit1 = 8
    data2 = [0, 6565, 7231, 7898, 8563, 9230, 9896, 10562, 11228, 11894, 12560, 13226, 13892, 14558, 15224, 15890, 16556, 17222, 17888, 18554, 19220, 19886, 20552, 21218, 21884, 22550, 23217, 23882, 24548, 25215, 25880, 26547, 27213, 27878, 28545, 29211, 29876, 30543, 31209, 31875, 32541, 33208, 33873, 34539, 35206, 35872, 36537, 37204, 37870, 38536, 39202]
    hit2 = 0

    CD = 45.0
    是否有护石 = 1

    MP = [800, 6000]
    无色消耗 = 5

    形态 = ["满", "柔化"]

    def 形态变更(self, 形态, char: Character):
        if (形态 == '' or 形态 not in self.形态) and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == "柔化" and '极·驭剑术(破剑阵)' not in char.护石栏:
            形态 = "满"
        if 形态 == "柔化":
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 8
        if 形态 == "满":
            self.hit0 = 2
            self.hit1 = 8
            self.hit2 = 0

    def 装备护石(self, char):
        self.倍率 *= 1.33
        self.CDR *= 0.92


class 技能24(主动技能):
    名称 = '誓约之剑：雷沃汀'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 132955, 163784, 194613, 225443, 256274, 287104, 317934, 348765, 379594, 410425, 441255, 472086, 502915, 533745, 564576, 595405, 626237, 657066, 687896, 718726, 749557, 780387, 811215, 842046, 872876, 903706, 934537, 965367, 996197, 1027028, 1057857, 1088687, 1119517, 1150348, 1181178, 1212007, 1242839, 1273668, 1304499, 1335329, 1366160, 1396989, 1427819, 1458649, 1489478, 1520308, 1551139, 1581969, 1612799, 1643630]
    hit0 = 1
    CD = 180.0

    MP = [2500, 5000]
    无色消耗 = 10


class 技能25(主动技能):
    名称 = '极诣·驭剑术：聚魔剑'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [0, 29029, 31974, 34919, 37865, 40810, 43755, 46699, 49644, 52590, 55537, 58480, 61425, 64370, 67316, 70261, 73206, 76151, 79096, 82042, 84987, 87931, 90876, 93821, 96767, 99712, 102657, 105602, 108547, 111492, 114438, 117383, 120327, 123272, 126216, 129163, 132107, 135052, 137997, 140942, 143888, 146833, 149777, 152723, 155668, 158613, 161558, 164503, 167449, 170394, 173339]
    hit0 = 1
    data1 = [0, 8508, 9371, 10234, 11097, 11960, 12823, 13686, 14549, 15412, 16276, 17139, 18003, 18867, 19730, 20593, 21456, 22319, 23183, 24045, 24909, 25771, 26634, 27498, 28360, 29224, 30086, 30950, 31812, 32676, 33539, 34402, 35265, 36131, 36993, 37857, 38719, 39583, 40446, 41309, 42172, 43034, 43898, 44761, 45624, 46487, 47352, 48214, 49078, 49940, 50804]
    hit1 = 4
    data2 = [0, 51051, 56229, 61408, 66586, 71766, 76945, 82124, 87304, 92482, 97660, 102841, 108020, 113198, 118379, 123556, 128735, 133914, 139094, 144273, 149451, 154630, 159810, 164989, 170168, 175347, 180525, 185705, 190884, 196063, 201242, 206421, 211599, 216779, 221959, 227137, 232316, 237496, 242674, 247853, 253031, 258211, 263391, 268569, 273748, 278928, 284106, 289286, 294463, 299643, 304823]
    hit2 = 1
    CD = 60

    MP = [773, 6000]
    无色消耗 = 7


class 技能26(被动技能):
    名称 = '剑心：魔剑觉醒'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能27(主动技能):
    名称 = '誓约之引：万剑之巅'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [0, 21641, 26660, 31679, 36696, 41715, 46734, 51752, 56771, 61789, 66807, 71826, 76845, 81863, 86881, 91901, 96917, 101936, 106956, 111973, 116993, 122010, 127028, 132048, 137066, 142086, 147102, 152121, 157141, 162158, 167176, 172195, 177213, 182232, 187251, 192268, 197287, 202306, 207324, 212343, 217360, 222379, 227398, 232416, 237435, 242452, 247471, 252491, 257509, 262528, 267545]
    hit0 = 4
    data1 = [0, 151494, 186624, 221751, 256881, 292011, 327139, 362269, 397398, 432528, 467657, 502785, 537915, 573043, 608173, 643303, 678430, 713561, 748690, 783820, 818948, 854077, 889207, 924335, 959465, 994594, 1029722, 1064853, 1099983, 1135110, 1170240, 1205369, 1240499, 1275626, 1310756, 1345886, 1381015, 1416145, 1451273, 1486402, 1521532, 1556660, 1591790, 1626918, 1662048, 1697177, 1732307, 1767436, 1802565, 1837694, 1872824]
    hit1 = 1
    data2 = [0, 12985, 15996, 19006, 22017, 25029, 28040, 31051, 34062, 37074, 40084, 43095, 46106, 49117, 52129, 55139, 58151, 61161, 64174, 67184, 70194, 73207, 76216, 79229, 82240, 85250, 88262, 91272, 94283, 97295, 100306, 103316, 106329, 109339, 112349, 115361, 118372, 121383, 124394, 127406, 130415, 133428, 136439, 139451, 142461, 145472, 148484, 151494, 154505, 157517, 160527]
    hit2 = 15
    CD = 290.0

    MP = [4028, 8056]
    无色消耗 = 15


class classChange(Character):
    def __init__(self, equVersion=""):
        self.实际名称 = 'sword_master'
        self.名称 = '极诣·驭剑士'
        self.角色 = '鬼剑士(女)'
        self.角色类型 = '输出'
        self.职业 = '驭剑士'
        self.武器选项 = ['巨剑', '短剑', '太刀', '钝器']
        self.输出类型选项 = ['物理百分比']
        self.防具精通属性 = ['力量']
        self.类型 = '物理百分比'
        self.武器类型 = '巨剑'
        self.防具类型 = '轻甲'
        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1
        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 1.71

        super().__init__(equVersion)

    def set_skill_info(self, info, rune_except=[], clothes_pants=[]):
        super().set_skill_info(info, rune_except=[
            '魔剑奥义'])
